//可以形成最大正方形的矩形数目
/*给你一个数组 rectangles ，其中 rectangles[i] = [li, wi] 表示第 i 个矩形的长度为 li 、宽度为 wi 。

如果存在 k 同时满足 k <= li 和 k <= wi ，就可以将第 i 个矩形切成边长为 k 的正方形。例如，矩形 [4,6] 可以切成边长最大为 4 的正方形。

设 maxLen 为可以从矩形数组 rectangles 切分得到的 最大正方形 的边长。

请你统计有多少个矩形能够切出边长为 maxLen 的正方形，并返回矩形 数目 。
1 <= rectangles.length <= 1000
rectangles[i].length == 2
1 <= li, wi <= 109
li != wi
*/
class Solution {
public:
    int countGoodRectangles(vector<vector<int>>& rectangles) {
        int max = 0;
        for (int i = 0; i < rectangles.size(); i++) {
            if (rectangles[i][0] > rectangles[i][1]) {
                swap(rectangles[i][0], rectangles[i][1]);
            }
            if (max < rectangles[i][0])
                max = rectangles[i][0];
        }
        int count = 0;
        for (int i = 0; i < rectangles.size(); i++) {
            if (rectangles[i][0] == max)
                count++;
        }
        return count;
    }
};

//交替子数组计数
/*给你一个二进制数组nums 。如果一个子数组中不存在 两个 相邻 元素的值 相同 的情况，我们称这样的子数组为 交替子数组 。
返回数组 nums 中交替子数组的数量。
1 <= nums.length <= 105
nums[i] 不是 0 就是 1 。
*/
class Solution {
public:
    long long countAlternatingSubarrays(vector<int>& nums) {
        long long count = 1;
        long long sum = 0;
        for (int i = 1; i <= nums.size(); i++) {
            if (i == nums.size() || nums[i - 1] == nums[i]) {
                sum += count * (count + 1) / 2;
                count = 1;
            } else {
                count++;
            }
        }
        return sum;
    }
};